| Información General | Detalles de la Prueba | Otros Detalles |
|---|---|---|
| Examen: Final (Módulo SEO) | Formato: Test 40 preg. (4 alt, 1 corr.) | Puntos: Correcta:+0.25, Incorrecta:-1/12 (-0.0833), Nula/NC: 0 |
| Fecha: 15 Mayo 2025 - 8:15H | Curso: 1º DAW | Calificación: 0-10 |
| Duración: 1H | Lugar: Salón Actos, Ed. Albéniz | RA: RA5 |
| ALUMNO/A: | CALIF:. |
Test: Elige la respuesta que es correcta
a) Descargar los encabezados HTML desde el sitio web
b) Renderizar una página dinámica con JavaScript
c) Convertir el HTML recibido en un objeto manipulable por Python ✅
d) Buscar enlaces en la página
requests.get(url).text y almacenarlo en codigo_html, ¿cuál es la forma correcta de parsear este contenido con BeautifulSoup?a) soup = BeautifulSoup(codigo_html, 'lxml')
b) soup = BeautifulSoup.parse(codigo_html)
c) soup = BeautifulSoup(codigo_html, 'html.parser') ✅
d) soup = html.parser(codigo_html)
<td> que tienen un atributo style con un valor exacto, por ejemplo, width: 14.8064%; height: 56px;, ¿cuál es la sintaxis correcta con find_all?a) soup.find_all('td', style="width: 14.8064%; height: 56px;")
b) soup.find_all('td', attrs={'style': "width: 14.8064%; height: 56px;"}) ✅
c) soup.select('td[style="width: 14.8064%; height: 56px;"]')
d) soup.find_all(tag='td', attributes={'style': "width: 14.8064%; height: 56px;"})
a) soup.find_all("script", type="application/javascript")
b) soup.find_all("meta", name="schema")
c) soup.find_all("script", type="application/ld+json") ✅
d) soup.find_all("div", class_="schema-org")
get_text() en BeautifulSoup?a) Elimina los enlaces
b) Extrae todo el texto visible del HTML ✅
c) Extrae solo el contenido de imágenes
d) Corta el contenido
soup.title.string.strip() ¿Qué hace este código cuando se ha extraído la información con BS4?a) Elimina las etiquetas <title>
b) Devuelve el contenido de la etiqueta`<title> sin espacios ✅
c) Reemplaza el título por vacío
d) Convierte el título en mayúsculas
texto = soup.get_text().lower() ¿Qué hace en el contexto de BS4?a) Extrae solo los títulos
b) Limpia HTML y pasa a minúsculas ✅
c) Convierte imágenes a texto
d) Cuenta párrafos
a) Palabras largas y en inglés
b) Palabras muy técnicas
c) Palabras comunes sin valor semántico (stopwords) ✅
d) Palabras duplicadas dentro del HTML
ul = soup.find('ul', class_="listado carreras grado") en el contexto del scraping con BeautifulSoup?a) Busca todos los elementos <ul> que contengan carreras de grado con cualquier clase.
b) Encuentra el primer elemento <ul> con la clase exacta "listado carreras grado" y lo asigna a ul. ✅
c) Extrae todos los elementos <li> con la clase "carreras grado" de una lista.
d) Encuentra todos los elementos <ul> que tengan una clase que contenga la palabra "listado".
a) div_tag = soup.find_all('div')[0]
b) div_tag = soup.select_one('div')
c) div_tag = soup.find('div') ✅
d) div_tag = soup.get('div')
a) link = soup.find_all('link')[0]
b) link = soup.select_one('a[href]')
c) link = soup.find('a') ✅
d) link = soup.get('a')
soup.find_all('img', alt=False)a) Verificar cuántas imágenes no tienen la etiqueta <img>
b) Detectar imágenes sin atributo alt, lo que afecta a la accesibilidad y SEO ✅
c) Encontrar imágenes grandes que ralentizan el sitio
d) Obtener imágenes con enlaces rotos
len(soup.find_all('h1'))a) La cantidad de enlaces internos en el sitio
b) El número total de palabras clave en el texto
c) Si hay más de un <h1>, lo cual es un error estructural SEO ✅
d) La cantidad de títulos duplicados
soup), ¿cómo determinarías de forma booleana si la etiqueta <meta name="description"> existe?a) soup.find("meta", attrs={"name": "description"}) != None ✅
b) "description" in soup.find("meta").attrs
c) len(soup.select("meta[name='description']")) > 0
d) soup.meta_description.exists()
<h1>a) soup.find('h1') == 1
b) soup.select('h1') == 1
c) len(soup.find_all('h1')) == 1 ✅
d) soup.h1.count() == 1
if soup.title else "No encontrado" al intentar extraer el texto de un título?a) Para asegurar que el título no exceda una longitud máxima.
✅ b) Para evitar un error AttributeError si la etiqueta title no existe en el HTML.
c) Para convertir el título a minúsculas.
d) Para añadir "No encontrado" si el título está vacío.
a) requests.get("/pagina")
b) requests.get("https://example.com" + "pagina")
c) requests.get_relative("https://example.com", "pagina")
✅ d) requests.get(urljoin("https://example.com", "/pagina"))
no_alt = [img for img in soup.find_all('img') if not img.get('alt')]a) Imágenes duplicadas
b) Imágenes grandes sin compresión
c) Imágenes sin texto alternativo, lo cual afecta a la accesibilidad y SEO ✅
d) Imágenes rotas
a) Obtiene solo los encabezados de la respuesta HTTP, sin el cuerpo del contenido.
b) Descarga completamente el contenido de la página web, lo que lo hace más eficiente que requests.get().
✅ c) Envía una solicitud HTTP de tipo HEAD para verificar si un enlace está roto y comprobar el tiempo de respuesta de la página.
d) Realiza una petición GET completa de la página web, incluyendo el contenido del cuerpo.
urlparse(href).netloc == "" or urlparse(href).netloc == urlparse(url).netloc en un script de scraping SEO?a) Que el enlace href apunta a una dirección HTTPS válida.
b) Que el enlace href está roto o devuelve error 404.
✅ c) Que el enlace href es interno
d) Que el enlace href redirige automáticamente a la página de inicio del sitio.
robots_url = url + "/robots.txt"; r = requests.get(robots_url)a) Estás comprobando si el sitio web utiliza sitemap.xml correctamente.
b) Estás extrayendo el contenido HTML del archivo robots.html.
✅ c) Estás solicitando el archivo robots para analizar las directivas que indican qué partes del sitio pueden ser rastreadas por bots.
d) Estás accediendo al panel de administración del sitio para hacer login.
requests.get() junto con response.elapsed.total_seconds() en un análisis que impacte en el rendimiento SEO?a) Para obtener el número de enlaces internos de la página.
b) Para verificar si la página redirige correctamente a HTTPS.
✅ c) Para medir el tiempo de carga del servidor (Time To First Byte), lo cual impacta en el rendimiento SEO.
d) Para analizar si las imágenes tienen el atributo alt.
parsed.netloc == parsed_base.netloc and not full_url.startswith("https://") en un análisis SEO técnico?a) Que el enlace pertenece a otro dominio y no está bien enlazado con rel="nofollow".
b) Que el enlace tiene un protocolo FTP y no HTTP/HTTPS.
✅ c) Que el enlace es interno pero no usa HTTPS, lo cual puede afectar negativamente al SEO por falta de seguridad.
d) Que el enlace apunta a un recurso multimedia como una imagen o vídeo externo.
requests.head(link).status_code == 404 al auditar enlaces de una web?a) Que el enlace se carga correctamente.
✅ b) Que el enlace está roto y no lleva a una página válida.
c) Que es un redireccionamiento interno.
d) Que el contenido está protegido por robots
a) soup.find("meta", name="description")
b) soup.get("meta").description
✅ c) soup.find("meta", attrs={"name": "description"})
d) soup.find("meta[name='description']")